<html>
<title>Release Notes for Derby 10.6.1.0</title>
<body>
<h1>
<a name="Release Notes for Derby 10.6.1.0"></a>Release Notes for Derby 10.6.1.0</h1>
<blockquote>
<p>These notes describe the difference between Derby release 10.6.1.0 and the preceding release 10.5.3.0.</p>
</blockquote>
<ul>
<li>
<a href="#Overview">Overview</a>
</li>
<li>
<a href="#New Features">New Features</a>
</li>
<li>
<a href="#Bug Fixes">Bug Fixes</a>
</li>
<li>
<a href="#Issues">Issues</a>
</li>
<li>
<a href="#Build Environment">Build Environment</a>
</li>
</ul>
<h2>
<a name="Overview"></a>Overview</h2>
<blockquote>


<p>
Derby is a pure Java relational database engine using standard SQL and
JDBC as its APIs.
</p>


<p>
Derby functionality includes:
</p>


<ul>

<li>Embedded engine with JDBC drivers</li>

<li>Network Server</li>

<li>Network client JDBC drivers</li>

<li>Command line tools: ij (SQL scripting), dblook (schema dump) and sysinfo (system info)</li>

</ul>


</blockquote>
<h2>
<a name="New Features"></a>New Features</h2>
<blockquote>


<p>
This is a feature release. The following new features were added:
</p>


<ul>


<li>
<b>Sequence Generators</b> - Named generators for allocating successive, evenly spaced numbers. See feature T176 of the SQL Standard.</li>
	

<li>
<b>User-defined types</b> - Named types bound to serializable Java objects.</li>
	

<li>
<b>Restricted table functions</b> - Limits on the columns and rows returned by table functions.</li>
	

<li>
<b>XPLAIN statistics collection</b> - Query plan statistics stored in tables for later analysis.</li>


<li>
<b>GROUP BY ROLLUP</b> - A subset of the SQL Standard ROLLUP functionality on the GROUP BY clause. See feature T431 of the SQL Standard.</li>
	

<li>
<b>CROSS JOIN</b> - CROSS JOIN syntax. See feature F401-04 of the SQL Standard.</li>
	

<li>
<b>Named columns join</b> - USING clauses in joins.</li>
	

<li>
<b>SHOW FUNCTIONS</b> - IJ command that lists stored functions.</li>
	

<li>
<b>In-memory back end enhancements</b> - Numerous improvements, including the ability to delete in-memory databases.</li>
	

<li>
<b>ORDER BY in subqueries</b> - Syntax for explicitly ordering rows returned by subqueries. See features F851, F852, and F855 of the SQL Standard.</li>
	

<li>
<b>OFFSET, FETCH FIRST/NEXT in subqueries</b> - Generalized syntax for retrieving row subsets. See features F856, F857, F858, F859, F861, F862, F863, and F864 of the SQL Standard.</li>
	

<li>
<b>NATURAL JOIN</b> - Support for NATURAL JOIN. See feature T431 of the SQL Standard.</li>
	

<li>
<b>Qualified identifers in ij</b> - Ability to reference cursors and prepared statements in other connections.</li>
	

<li>
<b>Configurable hash algorithm</b> - Ability to customize the hash algorithm used by BUILTIN authentication.</li>
	

<li>
<b>Context-sniffing scripts</b> - Ability of shipped scripts to locate Derby jars when DERBY_HOME isn't set.</li>
	

<li>
<b>Case-insensitive strings</b> - Ability to ignore case in string comparisons and sorts.</li>
	

</ul>


</blockquote>
<h2>
<a name="Bug Fixes"></a>Bug Fixes</h2>
<blockquote>
<p>The following issues are addressed by Derby release 10.6.1.0. These issues are not addressed in the preceding 10.5.3.0 release.</p>
<table border="2">
<tr>
<td><b>Issue Id</b></td><td><b>Description</b></td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4630">DERBY-4630</a></td><td>Documentation: sysinfo example in Tools 
guide needs to reflect DERBY-4441</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4621">DERBY-4621</a></td><td>Invalid conversion from Timestamp to 
String when calling setTimestamp() with Calendar</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4619">DERBY-4619</a></td><td>PropertySetter fails due to an empty 
jre/lib directory</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4618">DERBY-4618</a></td><td>"Syntax for the derbyrun.jar file" 
document page modification</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4615">DERBY-4615</a></td><td>EmbedCallableStatement ignores Calendar 
in getDate, getTime and getTimestamp</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4608">DERBY-4608</a></td><td>Unnecessary conversion of binary values 
to strings in SQLBinary.compare()</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4607">DERBY-4607</a></td><td>HeapScan test commits wrong connection</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4604">DERBY-4604</a></td><td>test 
lang.CollationTest.testSwedishCaseInsensitiveCollation fails with IBM's 
weme6.2/1.4.2. and Sun's 1.4.2</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4603">DERBY-4603</a></td><td>test 
testBuiltinAuthenticationWithConfigurableHash fails from 
upgradeTests.Changes10_6 with ibm's j9</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4602">DERBY-4602</a></td><td>10 failures and 11 errors with IBM 
weme6.2/j9/cdc-foundation after revision 922304 for DERBY-4483</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4600">DERBY-4600</a></td><td>Use ValueNodeList helper methods in 
CoalesceFunctionNode</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4594">DERBY-4594</a></td><td>ArrayIndexOutOfBoundsException thrown in 
PreparedStatement execution</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4592">DERBY-4592</a></td><td>Documentation: Update Sun trademarks in 
manuals</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4591">DERBY-4591</a></td><td>Documentation needed for global 
case-insensitive setting (DERBY-1748)</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4590">DERBY-4590</a></td><td>You can drop a file-system database from a
 directory named "memory"</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4584">DERBY-4584</a></td><td>Unable to connect to network server if 
client thread name has Japanese characters</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4579">DERBY-4579</a></td><td>Document the configurable hash 
authentication scheme</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4578">DERBY-4578</a></td><td>Documentation: Developer's Guide topic on
 double-booting is mostly obsolete</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4574">DERBY-4574</a></td><td>derby.jar not a valid R4 OSGi bundle</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4572">DERBY-4572</a></td><td>Documentation needed for user-defined 
types</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4571">DERBY-4571</a></td><td>Memory leak on server when using "SET 
ROLE" command</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4570">DERBY-4570</a></td><td>test failure in ij7 with cdc foundation 
profile (ibm's weme6.2)</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4569">DERBY-4569</a></td><td>failures in ij2 test with cdc/foundation 
(ibm's weme 6.2)</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4568">DERBY-4568</a></td><td>Documentation needed for sequence 
generators</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4567">DERBY-4567</a></td><td>Update the Tools documentation to 
describe the qualified identifiers which Sylvain just added to ij</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4564">DERBY-4564</a></td><td>Replication tests do not pick up 
derby.tests.networkServerStartTimeout setting</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4563">DERBY-4563</a></td><td>Avoid unnecessary use of getStream and 
getStreamWithDescriptor</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4562">DERBY-4562</a></td><td>Complation of prepared statement results 
in Syntax Error</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4554">DERBY-4554</a></td><td>Remove lang/scrollCursors1.sql</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4553">DERBY-4553</a></td><td>In ij GETCURRENTROWNUMBER directly 
writeits result  to output</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4549">DERBY-4549</a></td><td>NPE in JBitSet</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4547">DERBY-4547</a></td><td>Documentation: update copyright, version 
to 2010 and 10.6</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4543">DERBY-4543</a></td><td>CLOB values incorrectly stored on disk 
using the old header format</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4542">DERBY-4542</a></td><td>Avoid materialization where possible when
 cloning CollatorSQLClob</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4538">DERBY-4538</a></td><td>If the CREATE TRIGGER does not have the 
REFERENCING clause, then there is no need to keep before and after 
values for the triggering table</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4529">DERBY-4529</a></td><td>BlobMemTest and ClobMemTest don't call 
super.tearDown()</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4527">DERBY-4527</a></td><td>create ibm17 class for the old test 
harness</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4525">DERBY-4525</a></td><td>Document the in-memory storage back end</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4524">DERBY-4524</a></td><td>Incorrect DROP FUNCTION logic in 
AccessTest's tearDown() method</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4523">DERBY-4523</a></td><td>store.AccessTest fails on phoneME</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4522">DERBY-4522</a></td><td>Document SELECT statement requirements 
resulting from fix to DERBY-4191</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4520">DERBY-4520</a></td><td>Refactor and extend data type cloning 
facilities</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4519">DERBY-4519</a></td><td>Infinite loop in 
StreamFileContainer.writeColumn</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4518">DERBY-4518</a></td><td>Document ORDER BY and OFFSET/FETCH in 
subqueries</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4515">DERBY-4515</a></td><td>Document and clarify the use of 
DataValueDescriptor.setValue(InputStream,int)</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4514">DERBY-4514</a></td><td>j2ME test failures relating to 
runtimeStatisticsParser</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4512">DERBY-4512</a></td><td>Avoid unnecessary lookup in transaction 
table when adding transaction</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4510">DERBY-4510</a></td><td>Reference manual is unclear on max length
 for VARCHAR</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4509">DERBY-4509</a></td><td>Convert autoincrement.sql to JUnit</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4507">DERBY-4507</a></td><td>Write user documentation for restricted 
table functions.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4506">DERBY-4506</a></td><td>Document NATURAL JOIN in the reference 
manual</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4505">DERBY-4505</a></td><td>Document that views, triggers, and 
constraints run with definer's rights rather than invoker's rights</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4501">DERBY-4501</a></td><td>CLASSPATH scripts do not work as defined 
in Getting Started in Derby Guide</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4500">DERBY-4500</a></td><td>CLASSPATH scripts should not exit on 
error</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4496">DERBY-4496</a></td><td>Column list size mismatch with ORDER BY 
in INSERT statement</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4495">DERBY-4495</a></td><td>Add NATURAL JOIN syntax</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4494">DERBY-4494</a></td><td>Admin guide shows invalid shutdown 
command</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4492">DERBY-4492</a></td><td>Localized help message from derbyrun.jar 
has wrong encoding</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4491">DERBY-4491</a></td><td>The network client changes UDTs into 
Strings and returns their type as LONGVARBINARY.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4488">DERBY-4488</a></td><td>Nullpointer when performing INSERT INTO</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4483">DERBY-4483</a></td><td>Provide a way to change the hash 
algorithm used by BUILTIN authentication</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4482">DERBY-4482</a></td><td>Property to set IJ session locale not 
documented (assume this is derby.ui.locale)</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4479">DERBY-4479</a></td><td>after rename table a to b then create 
table a statement execute cause null point exception</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4477">DERBY-4477</a></td><td>Selecting / projecting a column whose 
value is represented by a stream more than once fails</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4476">DERBY-4476</a></td><td>Use helper methods from IdUtil instead of
 TupleDescriptor.quoteProtectName()</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4475">DERBY-4475</a></td><td>[patch] roleName isn't trimmed as 
expected</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4473">DERBY-4473</a></td><td>[patch] remove some allocated but unused 
objects</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4472">DERBY-4472</a></td><td>[patch] non short circuit op, could cause
 eof problems</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4465">DERBY-4465</a></td><td>Typo in error message from SQLChar</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4461">DERBY-4461</a></td><td>'testD151(...Derby151Test)java.sql.SQLException:
 Failed to start database' (and more ...) on Suse EE S 10 Linux/IBM 
1.6.0, Fedora Core 5/Sun 1.6.0-b105, Win XP/Sun 1.6.0_10</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4460">DERBY-4460</a></td><td>test_031_derby_4413 failed in nightly 
regression run : ComparisonFailure: expected: 1 but was: 2</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4457">DERBY-4457</a></td><td>'Column value mismatch' in 
'testDistinctInsertWithGeneratedColumn(...lang.DistinctTest)' on Jvm 
1.5, 1.4, phoneME.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4455">DERBY-4455</a></td><td>Prepared statement failure with CLOB: 
Stream has already been read and end-of-file reached and cannot be 
re-used.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4451">DERBY-4451</a></td><td>ArrayIndexOutOfBoundsException or ASSERT 
FAILED when inserting generated columns out of order</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4450">DERBY-4450</a></td><td>GROUP BY in an IN-subquery inside HAVING 
clause whose select list is subset of group by columns, gives NPE</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4448">DERBY-4448</a></td><td>ArrayIndexOutOfBoundsException when 
trying to override generated column</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4446">DERBY-4446</a></td><td>Clarify reference manual regarding 
specifying field length of LONG VARCHAR columns</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4445">DERBY-4445</a></td><td>Document new ij SHOW FUNCTIONS command</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4442">DERBY-4442</a></td><td>Evaluation of default value and identity 
in an INSERT result set evaluated too early.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4441">DERBY-4441</a></td><td>Change sysinfo to print out more specific
 JVM information</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4438">DERBY-4438</a></td><td>'Table/View 'T1' already exists in Schema
 'APP'' in lang.DropTableTest on phoneME/cvm</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4435">DERBY-4435</a></td><td>Emptying index fails with NPE doing 
replacement import of empty file</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4432">DERBY-4432</a></td><td>Memory leak when attempting to boot 
non-existing database with the in-memory back end</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4430">DERBY-4430</a></td><td>Make ij's SHOW and DESCRIBE commands more
 db agnostic</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4429">DERBY-4429</a></td><td>Let StressMultiTest read Threads and 
Minutes to run as system property</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4427">DERBY-4427</a></td><td>TestConfiguration.existingServerSuite(....,portNumber)
 must use the supplied portNumber</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4425">DERBY-4425</a></td><td>NullPointerException with INSERT INTO ...
 from UNION and columns generated from expressions</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4424">DERBY-4424</a></td><td>Convert outerjoin.sql into JUnit</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4423">DERBY-4423</a></td><td>Convert dropTable.sql into JUnit</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4421">DERBY-4421</a></td><td>Allow Visitors to process the nodes 
bottom-up</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4420">DERBY-4420</a></td><td>NullPointerException with INSERT INTO ...
 from EXCEPT/INTERSECT</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4419">DERBY-4419</a></td><td>NullPointerException with INSERT INTO ...
 from UNION and identity columns</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4416">DERBY-4416</a></td><td>Handle comparison of two constants as a 
boolean constant</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4415">DERBY-4415</a></td><td>Make it easy to plug custom AST printers 
into the compiler</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4414">DERBY-4414</a></td><td>NullPointerException with JOIN...USING 
and invalid table name in select list</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4413">DERBY-4413</a></td><td>INSERT from SELECT DISTINCT gives 
assertFailure (sane), or  NPE (insane) in presence of generated columns</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4412">DERBY-4412</a></td><td>Make getNegation() abstract in 
BinaryComparisonOperatorNode and UnaryComparisonOperatorNode</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4411">DERBY-4411</a></td><td>Scalar subquery erroneously rejected for 
not returning exactly one row</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4410">DERBY-4410</a></td><td>NullPointerException when USING clause 
contains all columns in both join tables</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4409">DERBY-4409</a></td><td>Make some tests run faster by using  
CleanDatabaseSetup + decorateSQL + rollback idiom</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4407">DERBY-4407</a></td><td>StringIndexOutOfBoundsException in ij 
when result has no columns</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4405">DERBY-4405</a></td><td>Transformation to inner join not 
performed for certain three-way joins</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4401">DERBY-4401</a></td><td>Document USING clause in joins</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4399">DERBY-4399</a></td><td>Syntax description for 
TableViewOrFunctionExpression lack subquery option</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4398">DERBY-4398</a></td><td>Allow OFFSET/FETCH in subqueries</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4394">DERBY-4394</a></td><td>DERBY-3002</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4393">DERBY-4393</a></td><td>lang.SequenceTest fails w/ "Sequence 
'ALPHA_SEQ' already exists." on phoneME/cvm</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4392">DERBY-4392</a></td><td>"Table/View / Constraint already exists 
in Schema 'APP'" in lang.CheckConstraintTest on phoneME/cvm</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4391">DERBY-4391</a></td><td>NullPointerException when comparing 
indexed column with result from a set operation</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4388">DERBY-4388</a></td><td>NullPointerException in RIGHT JOIN with 
NOT BETWEEN</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4387">DERBY-4387</a></td><td>Infinite loop in 
PredicateList.joinClauseTransitiveClosure()</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4386">DERBY-4386</a></td><td>JavaDoc warnings in several classes in 
impl/sql/execute/rts</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4384">DERBY-4384</a></td><td>testDynamicArgsMetaData has been failing 
since Aug 24th on weme6.2 with NoSuchMethodError</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4382">DERBY-4382</a></td><td>missing documentation from reference 
guide for ORDER BY null ordering clause (i.e. NULLS FIRST / NULLS LAST )</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4380">DERBY-4380</a></td><td>Subqueries not allowed in ON clause</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4377">DERBY-4377</a></td><td>Developer's Guide statement on shutting 
down Derby needs qualification</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4376">DERBY-4376</a></td><td>Simple select runs forever</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4374">DERBY-4374</a></td><td>Document the CROSS JOIN operation in the 
reference manual</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4372">DERBY-4372</a></td><td>Wrong result for simple join when index 
is created</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4370">DERBY-4370</a></td><td>Implement JOIN ... USING syntax</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4367">DERBY-4367</a></td><td>Replace Utils.min and Utils.max in the 
client driver with standard methods in java.lang.Math</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4365">DERBY-4365</a></td><td>NullPointerException when preparing LEFT 
OUTER JOIN between VALUES statements</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4363">DERBY-4363</a></td><td>DERBY-3002</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4361">DERBY-4361</a></td><td>testDefault fixture in 
engine.ErrorStreamTest has been failing with 
junit.framework.AssertionFailedError: File 
C:\jartest\JarResults.XXdateXX\ibm15_suites.All\system\derby.log could 
not be deleted</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4359">DERBY-4359</a></td><td>DERBY-4358</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4356">DERBY-4356</a></td><td>testStartStopManagementFromApplication(org.apache.derbyTesting.functionTests.tests.management.ManagementMBeanTest)junit.framework.AssertionFailedError:
 expected:&amp;lt;2&amp;gt; but was:&amp;lt;%&amp;gt;</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4355">DERBY-4355</a></td><td>Implement CROSS JOIN</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4349">DERBY-4349</a></td><td>Documentation build files incorrectly 
specify missing stylesheet</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4348">DERBY-4348</a></td><td>Copy table content with "INSERT INTO 
table SELECT FROM (...)" statement leads to corrupt data</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4347">DERBY-4347</a></td><td>Provide a property to increase network 
server start  timeout  for JUnit tests</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4342">DERBY-4342</a></td><td>SQLSTATE 38000 (NullPointerException) at 
inner self join and value(x1, x2...)</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4341">DERBY-4341</a></td><td>Building with ant all with a different 
CLASSPATH defined causes the build to fail</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4338">DERBY-4338</a></td><td>Network client raises error "executeQuery
 method can not be used for update" when sql is preceded by /* */ 
comments</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4336">DERBY-4336</a></td><td>Remove Blob and Clob interface methods 
from the list of unsupported methods in UnsupportedVetter</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4330">DERBY-4330</a></td><td>NullPointerException or assert failure 
when re-executing PreparedStatement after lock timeout</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4326">DERBY-4326</a></td><td>hang on winvista with IBM 1.6 SR5 in 
NSSecurityMechanismTest</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4322">DERBY-4322</a></td><td>intermittent test failure in 
derbynet/runtimeinfo</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4318">DERBY-4318</a></td><td>convert inbetween.sql to JUNIT</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4317">DERBY-4317</a></td><td>convert columnDefaults.sql to JUNIT</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4313">DERBY-4313</a></td><td>JDBC.dropUsingDMD() may skip dropping 
objects</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4311">DERBY-4311</a></td><td>BaseJDBCTestCase.assertErrorCode() never 
fails</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4307">DERBY-4307</a></td><td>testRunTests in RuntimeinfoTest fails 
periodically with Assertion failure checking output</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4304">DERBY-4304</a></td><td>Network Server shutdown should handle 
exceptions and finish the server shutdown completely</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4297">DERBY-4297</a></td><td>'compilation time did not compute 
(0,0,0,0) expected:&amp;lt;16&amp;gt; but was:&amp;lt;0&amp;gt;' in 
testGroupBySortProps(....tests.lang.XplainStatisticsTest)</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4293">DERBY-4293</a></td><td>Mutable public static variables</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4290">DERBY-4290</a></td><td>suites.All hangs on phoneME/cvm - caused 
by cvm/phoneME error</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4288">DERBY-4288</a></td><td>Tools guide lists too many parameters for
 SYSCS_EXPORT_QUERY* procedures</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4284">DERBY-4284</a></td><td>All Columns become Nullable when Using 
left join</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4283">DERBY-4283</a></td><td>setEmbeddedCP should not exit on error</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4282">DERBY-4282</a></td><td>strange behavior with the "update ... 
where current of c1" in the CheckConstraintTest</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4263">DERBY-4263</a></td><td>PropertySetter isn't able to recognize 
JDK without version number in path</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4262">DERBY-4262</a></td><td>test NetScripts fails with IBM's weme6.1 </td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4256">DERBY-4256</a></td><td>allow alter table to increase the maximum
 size of a blob and a clob.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4253">DERBY-4253</a></td><td>documentation should indicate that a 
database cannot be upgraded if already booted in soft upgrade mode</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4248">DERBY-4248</a></td><td>convert checkConstraint.sql to JUnit</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4244">DERBY-4244</a></td><td>ALTER TABLE Sanity ASSERT in add column 
with autocommit off</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4236">DERBY-4236</a></td><td>Update the FAQ for Derby 10.5</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4228">DERBY-4228</a></td><td>Remove unused pre-i18n constructors in 
BatchUpdateException</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4223">DERBY-4223</a></td><td>Provide the ability to use properties 
with ij.runScript()</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4217">DERBY-4217</a></td><td>DERBY-4090</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4213">DERBY-4213</a></td><td>sttest needs to be adjusted to not run 
out of disk space</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4208">DERBY-4208</a></td><td>Parameters ? with OFFSET and/or FETCH</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4199">DERBY-4199</a></td><td>Write exceptions to file in the fail 
directory as they occur with JUnit tests</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4192">DERBY-4192</a></td><td>OFFSET and FETCH FIRST documentation 
improvement</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4191">DERBY-4191</a></td><td>Lack of SELECT privilege does not prevent
 SELECT COUNT(*)</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4190">DERBY-4190</a></td><td>Incorrect example for 
SYSCS_DIAG.CONTAINED_ROLES in the reference manual</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4187">DERBY-4187</a></td><td>Convert altertable.sql to JUnit</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4177">DERBY-4177</a></td><td>Javadoc for BTreeLockingPolicy should not
 mention "scan lock" anymore</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4153">DERBY-4153</a></td><td>Document that starting with 10.5 network 
server will attempt to create the trace directory if it does not exist</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4124">DERBY-4124</a></td><td>Broken double-checked-locking in 
EmbeddedDataSource.findDriver</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4120">DERBY-4120</a></td><td>derbyclient.jar is not a complete OSGi 
bundle</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4110">DERBY-4110</a></td><td>When deleting rows from a table name with
 its synonym name, Derby throws SQLSTATE 42X04.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4107">DERBY-4107</a></td><td>The Reference Guide incorrectly describes
 the behavior of the DATE function when applied to an integer argument</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4106">DERBY-4106</a></td><td>The Reference Gulde claims that the 
INTEGER function can be applied to dates and times</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4102">DERBY-4102</a></td><td>Assert failure or ClassCastException in 
EmbedBlob when retrieving BLOB &amp;gt;= 32K</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4092">DERBY-4092</a></td><td>You should not be able to invoke a table 
function as a scalar function</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4087">DERBY-4087</a></td><td>Clean up debug printing of the abstract 
syntax trees after parsing, binding and optimization </td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4085">DERBY-4085</a></td><td>DERBY-646</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4081">DERBY-4081</a></td><td>BTreeController.comparePreviousRecord() 
may fail to release latch on left-most leaf</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4069">DERBY-4069</a></td><td>Wrong behavior when ROW_NUMBER is 
combined with ORDER BY</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4065">DERBY-4065</a></td><td>DERBY-2487</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4062">DERBY-4062</a></td><td>DERBY-2487</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4051">DERBY-4051</a></td><td>The javadoc for SpaceTable refers to an 
alias that doesn't seem to work</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4047">DERBY-4047</a></td><td>tests updatelocks and 
updatelocksJDBC30.sql are not run anywhere; should get evaluated</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4044">DERBY-4044</a></td><td>Use helper methods from IdUtil to quote 
SQL identifiers in EmbedResultSet</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4038">DERBY-4038</a></td><td>On Z/OS store/access.sql fails with 
encryptionAES and encryptionDES</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4000">DERBY-4000</a></td><td>Reference manual leaves != out of list of
 boolean operators</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3947">DERBY-3947</a></td><td>Cannot insert 994 character long string 
into indexed column</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3941">DERBY-3941</a></td><td>Unsafe use of DataInput.skipBytes() in 
StoredPage and StoredFieldHeader</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3882">DERBY-3882</a></td><td>Expensive cursor name lookup in network 
server</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3853">DERBY-3853</a></td><td>Behaviour of setTypeMap() differs between
 embedded and client</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3852">DERBY-3852</a></td><td>J2EEDataSourceTest may ignore some 
failures</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3844">DERBY-3844</a></td><td>ASSERT failure in BasePage.unlatch() when
 running LobStreamsTest</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3842">DERBY-3842</a></td><td>Convert 
"org.apache.derbyTesting.functionTests.tests.store.holdCursorExternalSortJDBC30.sql"
 to junit.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3839">DERBY-3839</a></td><td>Convert 
"org.apache.derbyTesting.functionTests.tests.store.holdCursorJDBC30.sql"
 to junit. </td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3834">DERBY-3834</a></td><td>Convert derbynet/runtimeinfo to JUnit</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3829">DERBY-3829</a></td><td>Convert derbynet/sysinfo and 
derbynet/sysinfo_with_properties to JUnit</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3809">DERBY-3809</a></td><td>Add a SHOW FUNCTIONS command to ij</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3757">DERBY-3757</a></td><td>'ASSERT FAILED transaction table has null
 entry when running new StressMultiTest</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3729">DERBY-3729</a></td><td>Error message is rather unrevealing when 
creating large databases on FAT32 drives</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3656">DERBY-3656</a></td><td>ERROR XJ073: The data in this BLOB or 
CLOB is no longer available. should include the possibility that the lob
 has been freed</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3650">DERBY-3650</a></td><td>internal multiple references from 
different rows to a single BLOB/CLOB stream leads to various errors when
 second reference used.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3646">DERBY-3646</a></td><td>Embedded returns wrong results when 
selecting a blob column twice and using getBinaryStream()</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3645">DERBY-3645</a></td><td>Insert into selecting BLOB column twice 
leads to SQLException: Restore of a serializable or SQLData object of 
class error selecting from the table</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3635">DERBY-3635</a></td><td>Cannot build SELECT LIST expressions 
involving row_number()</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3634">DERBY-3634</a></td><td>Cannot use row_number() in ORDER BY 
clause</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3610">DERBY-3610</a></td><td>Confusing error message when granting 
execute privilege</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3605">DERBY-3605</a></td><td>Remove confusing statement "If there is 
an index defined on the table, the table can be renamed."</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3518">DERBY-3518</a></td><td>Getting started guide: Incomplete 
instructions for compiling WwdEmbedded.java</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3478">DERBY-3478</a></td><td>Simple column names specified as part of 
"AS" clause in a table expression are ignored if the table expression is
 a view.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3473">DERBY-3473</a></td><td>DERBY-3330</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3376">DERBY-3376</a></td><td>Test case in GrantRevokeDDLTest looks to 
be accidentally commented out...</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3259">DERBY-3259</a></td><td>Tuning manual needs performance tip on 
compressing tables</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3225">DERBY-3225</a></td><td>Some demo programs in -bin distributions 
are not mentioned in demo/programs/readme.html</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3207">DERBY-3207</a></td><td>The bin scripts should be able to run 
when DERBY_HOME is not set</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3092">DERBY-3092</a></td><td>Use java.util.concurrent in 
TransactionTable to improve scalability</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3070">DERBY-3070</a></td><td>Developer's Guide upgrade topic "Soft 
upgrade limitations" needs updating for 10.3</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3062">DERBY-3062</a></td><td>Docn errors in System procedure and 
Create procedure descriptions</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-2992">DERBY-2992</a></td><td>getBinaryStream returns incorrect result 
(truncated value) if underlying blob is deleted</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-2895">DERBY-2895</a></td><td>convert 
lang/declareGlobalTempTableJavaJDBC30.java to JUnit</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-2845">DERBY-2845</a></td><td>Devguide tips on debugging deadlocks 
should be clearer</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-2769">DERBY-2769</a></td><td>Implement error handling/parameter 
checking in Clob.setString</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-2676">DERBY-2676</a></td><td>Class name 
"com.ibm.db2j.aggregates.Aggregator" refered in error message is no 
longer correct</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-2602">DERBY-2602</a></td><td>TIMESTAMP value is truncated  when return
 to client</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-2487">DERBY-2487</a></td><td>Enhance Derby with EXPLAIN Functionality</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-2349">DERBY-2349</a></td><td>Accessing a BLOB column twice in an 
INSERT trigger leads to errors in the value on-disk</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-2282">DERBY-2282</a></td><td>Incorrect "transitive closure" logic 
leads to inconsistent behavior for binary comparison predicates.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-2211">DERBY-2211</a></td><td>java/testing/README.htm needs to be 
updated with information on JUnit tests</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-2024">DERBY-2024</a></td><td>DERBY-1982</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-2017">DERBY-2017</a></td><td>Client driver can insert and commit 
partial data when a LOB stream throws IOException or does not match the 
specified length</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-1748">DERBY-1748</a></td><td>Global case insensitive setting</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-1553">DERBY-1553</a></td><td>With the change for DERBY-353 
IDENTITY_VAL_LOCAL documentation needs to be changed to reflect the 
value inserted by the user for GENERATED BY DEFAULT</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-1194">DERBY-1194</a></td><td>Clarify wording for ways to manage the 
Network Server in the Derby Server and Administration Guide</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-1160">DERBY-1160</a></td><td>Document use of SPACE_TABLE to tell for 
tables and indexes: a) the number of pages allocated  b) the number of 
empty pages</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-887">DERBY-887</a></td><td>Select statement returns wrong number of 
rows if you compare an integer column with a boolean expression in the 
where clause</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-870">DERBY-870</a></td><td>Update documentation on setting up LDAP 
user authentication.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-712">DERBY-712</a></td><td>Support for sequences</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-711">DERBY-711</a></td><td>The documentation should explain that 
Derby database files are platform-independent</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-700">DERBY-700</a></td><td>Derby does not prevent dual boot of 
database from different classloaders on Linux and Mac OS X</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-495">DERBY-495</a></td><td>COALESCE</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-482">DERBY-482</a></td><td>GENERATED BY DEFAULT option should be 
documented in Derby Tools and Utilities guide under "Importing into 
tables with identity columns" section.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-151">DERBY-151</a></td><td>Thread termination -&amp;gt; XSDG after 
operation is 'complete'</td>
</tr>
</table>
</blockquote>
<h2>
<a name="Issues"></a>Issues</h2>
<blockquote>
<p>Compared with the previous release (10.5.3.0), Derby release 10.6.1.0 introduces the following new features and incompatibilities. These merit your special attention.</p>
<ul>
<li>
<a href="#Note for DERBY-4602">
<p>Note for DERBY-4602: 
Default hash algorithm for BUILTIN authentication changed to SHA-256
</p>
</a>
</li>
<li>
<a href="#Note for DERBY-4483">
<p>Note for DERBY-4483: 
Strong password substitution cannot be used with new defaults for
BUILTIN authentication.
</p>
</a>
</li>
<li>
<a href="#Note for DERBY-4432">
<p>Note for DERBY-4432: 
The in-memory back end will no longer create a database if the virtual database directory already exists.
</p>
</a>
</li>
<li>
<a href="#Note for DERBY-4380">
<p>Note for DERBY-4380: 
Changed error code and message when referencing column not in scope in
ON clause.
</p>
</a>
</li>
<li>
<a href="#Note for DERBY-4355">
<p>Note for DERBY-4355: 
CROSS is now a reserved keyword and cannot be used as an unquoted identifier.
</p>
</a>
</li>
<li>
<a href="#Note for DERBY-4191">
<p>Note for DERBY-4191: 
Some queries require additional SELECT privileges now.
</p>
</a>
</li>
<li>
<a href="#Note for DERBY-3844">
<p>Note for DERBY-3844: 
Applications may no longer obtain a LOB object, or a <tt>Reader</tt> or an <tt>InputStream</tt>, from the same column more than once per row.
</p>
</a>
</li>
<li>
<a href="#Note for DERBY-2769">
<p>Note for DERBY-2769: 
Comprehensive validity checks for the parameters of <tt>Clob.setString</tt> have been introduced.
</p>
</a>
</li>
</ul>
<hr>
<h3>
<a name="Note for DERBY-4602"></a>Note for DERBY-4602</h3>
<blockquote>

<!-- 
  SUMMARIZE THE ISSUE. This is a one line summary of the issue.

  For instance:

  Applications may no longer open two InputStreams on the same ResultSet column.
-->


<h4>Summary of Change</h4>

<p>
Default hash algorithm for BUILTIN authentication changed to SHA-256
</p>


<!-- 
  DESCRIBE WHAT IT IS THAT THE USER ACTUALLY SEES WHEN THE PROBLEM OCCURS.

  For instance:

  In the previous release, applications were able to open two
  InputStreams on the same column. Depending on how these streams
  interacted, the value siphoned out of the column was erratic. Now
  Derby raises a SQLException when the application attempts to create
  the second InputStream.
-->


<h4>Symptoms Seen by Applications Affected by Change</h4>

<p>
If a database that uses BUILTIN authentication is opened on a
platform that does not support the new default hash algorithm
(SHA-256), the following exception may be seen when connecting to the
database or when setting the password for a user:
</p>


<pre>
ERROR XBCXW: The message digest algorithm 'SHA-256' is not supported
by any of the available cryptography providers. Please install a
cryptography provider that supports that algorithm, or specify another
algorithm in the derby.authentication.builtin.algorithm property.
</pre>


<p>
The default algorithm is initialized to SHA-256 when the database is
created. However, if SHA-256 is not available, it is initialized to
the old default (SHA-1) instead. The error message above should
therefore only be seen if the database was created on a platform that
supports SHA-256 and opened on a platform that doesn't support
SHA-256.
</p>

<!-- 
  OPTIONAL: DESCRIBE INCOMPATIBILITIES WITH PREVIOUS RELEASE, IF ANY.

  For instance:

  Applications which open two InputStreams on the ResultSet column now
  fail.
-->


<h4>Incompatibilities with Previous Release</h4>

<p>
Databases created on a platform with support for the new default
algorithm (SHA-256) may now require some changes before they can be
used together with BUILTIN authentication on platforms that don't
support the new algorithm. In previous releases, differences in the
set of supported hash algorithms did not cause a need for changes
when moving databases across platforms.
</p>


<!-- 
  DESCRIBE WHY THE CHANGE WAS MADE.

  For instance:

  The previous behavior violated the JDBC standard. The new behavior
  is correct.
-->


<h4>Rationale for Change</h4>

<p>
The default algorithm in previous releases (SHA-1) is not considered
secure enough for most uses by U.S. government agencies. SHA-256 is
widely recognized as more secure than SHA-1 and is therefore used as
the default if the platform on which the database is created supports
the algorithm.
</p>


<!-- 
  OPTIONAL: DESCRIBE HOW TO REVERT TO THE PREVIOUS BEHAVIOR OR
  OTHERWISE AVOID THE INCOMPATIBILITIES INTRODUCED BY THIS CHANGE.

  For instance:

  Users must recode applications which open multiple streams on the same column.
-->


<h4>Application Changes Required</h4>

<p>
If a database cannot be used on a platform because of this issue, one
of the following steps must be taken:
</p>


<h5>Alternative 1</h5>

<p>
Recreate the database on the platform that doesn't support
SHA-256. The new database will use the more widely available SHA-1
algorithm as default.
</p>


<h5>Alternative 2</h5>

<p>
Install a Java Cryptography Extension (JCE) Provider that supports the
SHA-256 algorithm.
</p>


<h5>Alternative 3</h5>

<p>
On the platform on which the database was created, change the default
algorithm to SHA-1 (or to some other algorithm known to be supported
on the target platform) by executing the following SQL statement:
</p>


<pre>
CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(
        'derby.authentication.builtin.algorithm', 'SHA-1')
</pre>


<p>
If there are any users defined at the database level before the
algorithm is changed to SHA-1, their passwords will have to be set
again to ensure that they are rehashed with SHA-1. For example, if
there's a user called 'alice' with the password 'secret', the password
must be updated with this SQL statement before it can be used on the
platform with no support for SHA-256:
</p>


<pre>
CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(
        'derby.user.alice, 'secret)
</pre>


</blockquote>
<hr>
<h3>
<a name="Note for DERBY-4483"></a>Note for DERBY-4483</h3>
<blockquote>

<!-- 
  SUMMARIZE THE ISSUE. This is a one line summary of the issue.

  For instance:

  Applications may no longer open two InputStreams on the same ResultSet column.
-->


<h4>Summary of Change</h4>

<p>
Strong password substitution cannot be used with new defaults for
BUILTIN authentication.
</p>


<!-- 
  DESCRIBE WHAT IT IS THAT THE USER ACTUALLY SEES WHEN THE PROBLEM OCCURS.

  For instance:

  In the previous release, applications were able to open two
  InputStreams on the same column. Depending on how these streams
  interacted, the value siphoned out of the column was erratic. Now
  Derby raises a SQLException when the application attempts to create
  the second InputStream.
-->


<h4>Symptoms Seen by Applications Affected by Change</h4>

<p>
In a database created with the new version of Derby, the BUILTIN
authentication provider will by default store passwords in a way
that's not compatible with the strong password substitution security
mechanism. Applications that attempt to connect to the database using
the Derby network client driver with <tt>securityMechanism=8</tt> in
the connection URL, will therefore fail to connect. The connection
attempt will be refused with the following error message:
</p>


<pre>
ERROR 08004: DERBY SQL error: SQLCODE: -1, SQLSTATE: 08004, SQLERRMC:
Connection authentication failure occurred. Either the supplied
credentials were invalid, or the database uses a password encryption
scheme which is not compatible with the strong password substitution
security mechanism. If this error started after upgrade, refer to the
release note for DERBY-4483 for options.
</pre>

<!-- 
  OPTIONAL: DESCRIBE INCOMPATIBILITIES WITH PREVIOUS RELEASE, IF ANY.

  For instance:

  Applications which open two InputStreams on the ResultSet column now
  fail.
-->


<h4>Incompatibilities with Previous Release</h4>

<p>
Applications that use BUILTIN authentication and the strong password
substitution security mechanism will not be able to establish
connections to the database if the database uses the new defaults for
BUILTIN authentication.
</p>


<p>
Only databases created with the new version of Derby will
automatically use the new defaults. Databases upgraded from previous
versions of Derby will continue to use the old defaults, and they will
not be affected unless the settings for BUILTIN authentication are
changed manually to enable the new behaviour.
</p>


<!-- 
  DESCRIBE WHY THE CHANGE WAS MADE.

  For instance:

  The previous behavior violated the JDBC standard. The new behavior
  is correct.
-->


<h4>Rationale for Change</h4>

<p>
The default BUILTIN authentication scheme used in previous releases
has a weakness that makes it vulnerable to attacks. In the new
release, an alternative BUILTIN authentication scheme without this
vulnerability has been added. Despite this new scheme's
incompatibility with strong password substitution, it was made the
default for databases created with the new release of Derby in order
to improve out-of-the-box security.
</p>


<!-- 
  OPTIONAL: DESCRIBE HOW TO REVERT TO THE PREVIOUS BEHAVIOR OR
  OTHERWISE AVOID THE INCOMPATIBILITIES INTRODUCED BY THIS CHANGE.

  For instance:

  Users must recode applications which open multiple streams on the same column.
-->


<h4>Application Changes Required</h4>

<p>
Applications that are affected by this incompatibility can be made to
work by making one of the following changes:
</p>


<h5>Alternative 1: Use another security mechanism</h5>


<p>
You can switch to another security mechanism by changing the value of
the <tt>securityMechanism</tt> connection attribute. Only the strong
password substitution security mechanism is incompatible with the new
BUILTIN authentication. Note that if you pick one of the security
mechanisms that send your credentials unencrypted over the network,
you may want to enable network encryption and authentication with
SSL/TLS. Details about how to change security mechanisms and how to
enable SSL/TLS can be found in the Derby Server and Administration
Guide.
</p>


<h5>Alternative 2: Revert to the old BUILTIN authentication behaviour</h5>


<p>
It is possible to revert to the old behaviour for BUILTIN
authentication, which will make it possible to connect when using the
strong password substitution security mechanism. To revert to the old
behaviour, set the database
property <tt>derby.authentication.builtin.algorithm</tt>
to <tt>NULL</tt> (or to an empty string) by executing this SQL statement:
</p>


<pre>
CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(
        'derby.authentication.builtin.algorithm', NULL)
</pre>


<p>
If you have created any users before setting the above property
to <tt>NULL</tt>, you will also need to set the passwords for all
those users again to ensure that they are stored using the old format,
since setting this property does not change how any existing passwords
are stored. Users whose passwords are stored using the old format will
be able to connect to the database with strong password substitution.
</p>


</blockquote>
<hr>
<h3>
<a name="Note for DERBY-4432"></a>Note for DERBY-4432</h3>
<blockquote>

<!-- 
  SUMMARIZE THE ISSUE. This is a one line summary of the issue.

  For instance:

  Applications may no longer open two InputStreams on the same ResultSet column.
-->


<h4>Summary of Change</h4>

<p>
The in-memory back end will no longer create a database if the virtual database directory already exists.
</p>


<!-- 
  DESCRIBE WHAT IT IS THAT THE USER ACTUALLY SEES WHEN THE PROBLEM OCCURS.

  For instance:

  In the previous release, applications were able to open two
  InputStreams on the same column. Depending on how these streams
  interacted, the value siphoned out of the column was erratic. Now
  Derby raises a SQLException when the application attempts to create
  the second InputStream.
-->


<h4>Symptoms Seen by Applications Affected by Change</h4>

<p>
If database 'memory:/tmp/a/myDB' already exists, an attempt to create 'memory:/tmp/a' results in:
<pre>
ERROR XJ041: Failed to create database 'memory:/tmp/a', see the next exception for details.
ERROR XBM0J: Directory memory:/tmp/a already exists.
</pre>

</p>


<!-- 
  OPTIONAL: DESCRIBE INCOMPATIBILITIES WITH PREVIOUS RELEASE, IF ANY.

  For instance:

  Applications which open two InputStreams on the ResultSet column now
  fail.
-->


<h4>Incompatibilities with Previous Release</h4>

<p>
If two (or more) in-memory databases are created, the application may fail to create the second database if the database paths are overlapping.
</p>


<!-- 
  DESCRIBE WHY THE CHANGE WAS MADE.

  For instance:

  The previous behavior violated the JDBC standard. The new behavior
  is correct.
-->


<h4>Rationale for Change</h4>

<p>
The fix makes the in-memory and the on-disk back ends consistent on this matter, and the change also fixes a memory leak when trying to boot a large number of non-existing in-memory databases (see <a href="https://issues.apache.org/jira/browse/DERBY-4432">DERBY-4432</a>).
</p>


<!-- 
  OPTIONAL: DESCRIBE HOW TO REVERT TO THE PREVIOUS BEHAVIOR OR
  OTHERWISE AVOID THE INCOMPATIBILITIES INTRODUCED BY THIS CHANGE.

  For instance:

  Users must recode applications which open multiple streams on the same column.
-->


<h4>Application Changes Required</h4>

<p>
Adjust the paths of the in-memory databases if required. In some cases it may be sufficient to reorder the database creations, but this is not recommended as it would potentially have severe side-effects with the on-disk back end (a database nested within another database).
</p>

<p>
There is no way to revert to the old behavior.
</p>



</blockquote>
<hr>
<h3>
<a name="Note for DERBY-4380"></a>Note for DERBY-4380</h3>
<blockquote>

<!-- 
  SUMMARIZE THE ISSUE. This is a one line summary of the issue.

  For instance:

  Applications may no longer open two InputStreams on the same ResultSet column.
-->


<h4>Summary of Change</h4>

<p>
Changed error code and message when referencing column not in scope in
ON clause.
</p>


<!-- 
  DESCRIBE WHAT IT IS THAT THE USER ACTUALLY SEES WHEN THE PROBLEM OCCURS.

  For instance:

  In the previous release, applications were able to open two
  InputStreams on the same column. Depending on how these streams
  interacted, the value siphoned out of the column was erratic. Now
  Derby raises a SQLException when the application attempts to create
  the second InputStream.
-->


<h4>Symptoms Seen by Applications Affected by Change</h4>

<p>
In the previous releases, SQL statements that referenced columns that
were not in scope in the ON clause of a JOIN, would under certain
conditions fail with the following SQLState and message:
</p>


<pre>
ERROR 42972: An ON clause associated with a JOIN operator is not valid.
</pre>


<p>
Now, the statements that used to fail with that message will instead
fail with the following SQLState and message:
</p>


<pre>
ERROR 42X04: Column 'T1.X' is either not in any table in the FROM list or appears within a join specification and is outside the scope of the join specification or appears in a HAVING clause and is not in the GROUP BY list. If this is a CREATE or ALTER TABLE  statement then 'T1.X' is not a column in the target table.
</pre>

<!-- 
  OPTIONAL: DESCRIBE INCOMPATIBILITIES WITH PREVIOUS RELEASE, IF ANY.

  For instance:

  Applications which open two InputStreams on the ResultSet column now
  fail.
-->

<!--h4>Incompatibilities with Previous Release</h4>
<p>
????
</p-->


<!-- 
  DESCRIBE WHY THE CHANGE WAS MADE.

  For instance:

  The previous behavior violated the JDBC standard. The new behavior
  is correct.
-->


<h4>Rationale for Change</h4>

<p>
This change was necessary because the code that decided which of the
two errors to raise, contained some logic that was not compatible with
the introduction of sub-queries in ON clauses. Additionally, the new
message makes it easier to see what is the problem with the statement,
as it mentions both why the ON clause is invalid and the name of the
column that is out of scope.
</p>


<!-- 
  OPTIONAL: DESCRIBE HOW TO REVERT TO THE PREVIOUS BEHAVIOR OR
  OTHERWISE AVOID THE INCOMPATIBILITIES INTRODUCED BY THIS CHANGE.

  For instance:

  Users must recode applications which open multiple streams on the same column.
-->


<h4>Application Changes Required</h4>

<p>
Applications that check for SQLState <code>42972</code> when
SQLExceptions are raised, should now check for
SQLState <code>42X04</code> instead.
</p>



</blockquote>
<hr>
<h3>
<a name="Note for DERBY-4355"></a>Note for DERBY-4355</h3>
<blockquote>

<!-- 
  SUMMARIZE THE ISSUE. This is a one line summary of the issue.

  For instance:

  Applications may no longer open two InputStreams on the same ResultSet column.
-->


<h4>Summary of Change</h4>

<p>
CROSS is now a reserved keyword and cannot be used as an unquoted identifier.
</p>


<!-- 
  DESCRIBE WHAT IT IS THAT THE USER ACTUALLY SEES WHEN THE PROBLEM OCCURS.

  For instance:

  In the previous release, applications were able to open two
  InputStreams on the same column. Depending on how these streams
  interacted, the value siphoned out of the column was erratic. Now
  Derby raises a SQLException when the application attempts to create
  the second InputStream.
-->


<h4>Symptoms Seen by Applications Affected by Change</h4>

<p>

In previous releases of Derby, CROSS was not a reserved keyword, so
applications could use CROSS as an identifier without quoting
it. Applications that use CROSS as an identifier (for instance to name
tables, views, columns, functions or procedures) and don't quote it,
will now see errors similar to this one:

</p>


<pre>
ERROR 42X01: Syntax error: Encountered "cross" at line 1, column 15.
</pre>

<!-- 
  OPTIONAL: DESCRIBE INCOMPATIBILITIES WITH PREVIOUS RELEASE, IF ANY.

  For instance:

  Applications which open two InputStreams on the ResultSet column now
  fail.
-->


<h4>Incompatibilities with Previous Release</h4>

<p>

Applications that use CROSS as an unquoted identifier will experience
syntax errors.

</p>


<!-- 
  DESCRIBE WHY THE CHANGE WAS MADE.

  For instance:

  The previous behavior violated the JDBC standard. The new behavior
  is correct.
-->


<h4>Rationale for Change</h4>

<p>

CROSS was made a reserved keyword in order to support the CROSS JOIN
operator. Also, the SQL:2003 standard defines CROSS as a reserved
keyword, so applications that use it as an unquoted identifier are not
portable.

</p>


<!-- 
  OPTIONAL: DESCRIBE HOW TO REVERT TO THE PREVIOUS BEHAVIOR OR
  OTHERWISE AVOID THE INCOMPATIBILITIES INTRODUCED BY THIS CHANGE.

  For instance:

  Users must recode applications which open multiple streams on the same column.
-->


<h4>Application Changes Required</h4>

<p>

SQL statements where CROSS is used as an unquoted identifier must be
rewritten so that CROSS is enclosed in double quotes.

</p>


<p>Examples:</p>


<p>
The statement <code>create table cross(x int)</code> must be rewritten
to <code>create table "CROSS"(x int)</code>. Similarly, the
statement <code>select * from cross</code> will have to be rewritten
to <code>select * from "CROSS"</code>.
</p>


</blockquote>
<hr>
<h3>
<a name="Note for DERBY-4191"></a>Note for DERBY-4191</h3>
<blockquote>

<!-- 
  Applications may start getting insufficient select privilege errors for queries that used to work despite insufficient privileges.
-->


<h4>Summary of Change</h4>

<p>
Some queries require additional SELECT privileges now.
</p>



<h4>Symptoms Seen by Applications Affected by Change</h4>

<p>
In previous releases, certain queries incorrectly succeeded when the
user lacked sufficient SELECT privileges. For instance, the following
query succeeded even if the user did not have SELECT privilege on the table:
</p>


<blockquote>
<pre>
    select 1 from anotheruser.table1
</pre>
</blockquote>


<p>
And the following query succeeded if the user had UPDATE but not
SELECT privilege on the column:
</p>


<blockquote>
<pre>
    update anotheruser.table1 set a = ( select max(a) + 2 from anotheruser.table1 ); 
</pre>
</blockquote>

<!-- 
  OPTIONAL: DESCRIBE INCOMPATIBILITIES WITH PREVIOUS RELEASE, IF ANY.

  For instance:

  Applications which open two InputStreams on the ResultSet column now
  fail.
-->


<h4>Incompatibilities with Previous Release</h4>

<p>
Now Derby raises a SQLException for those situations. For the first
query above, the user must now enjoy SELECT privilege on at least one
column in the table. For the second query, the user must now enjoy
SELECT as well as UPDATE privilege on the affected column.
</p>


<!-- 
  DESCRIBE WHY THE CHANGE WAS MADE.

  For instance:

  The previous behavior violated the JDBC standard. The new behavior
  is correct.
-->


<h4>Rationale for Change</h4>

<p>
The old behavior violated the SQL Standard. The new behavior is correct.
</p>


<!-- 
  OPTIONAL: DESCRIBE HOW TO REVERT TO THE PREVIOUS BEHAVIOR OR
  OTHERWISE AVOID THE INCOMPATIBILITIES INTRODUCED BY THIS CHANGE.

  For instance:

  Users must recode applications which open multiple streams on the same column.
-->


<h4>Application Changes Required</h4>

<p>
Database Administrators may need to grant users additional SELECT privileges.
</p>



</blockquote>
<hr>
<h3>
<a name="Note for DERBY-3844"></a>Note for DERBY-3844</h3>
<blockquote>

<!-- 
  SUMMARIZE THE ISSUE. This is a one line summary of the issue.

  For instance:

  Applications may no longer open two InputStreams on the same ResultSet column.
-->


<h4>Summary of Change</h4>

<p>
Applications may no longer obtain a LOB object, or a <tt>Reader</tt> or an <tt>InputStream</tt>, from the same column more than once per row.
</p>


<!-- 
  DESCRIBE WHAT IT IS THAT THE USER ACTUALLY SEES WHEN THE PROBLEM OCCURS.

  For instance:

  In the previous release, applications were able to open two
  InputStreams on the same column. Depending on how these streams
  interacted, the value siphoned out of the column was erratic. Now
  Derby raises a SQLException when the application attempts to create
  the second InputStream.
-->


<h4>Symptoms Seen by Applications Affected by Change</h4>

<p>
Derby will throw an exception with SQLState <it>XCL18</it> (carrying the message "Stream or LOB value cannot be retrieved more than once") when any of the following result set methods are invoked for the second time on a given column on a row:
<ul>
    
<li>getBlob (new behavior)</li>
    
<li>getClob (new behavior)</li>
    
<li>getObject (new behavior)</li>
    
<li>getAsciiStream (current behavior)</li>
    
<li>getCharacterStream (current behavior)</li>
    
<li>getBinaryStream (current behavior)</li>

</ul>

</p>


<!-- 
  OPTIONAL: DESCRIBE INCOMPATIBILITIES WITH PREVIOUS RELEASE, IF ANY.

  For instance:

  Applications which open two InputStreams on the ResultSet column now
  fail.
-->


<h4>Incompatibilities with Previous Release</h4>

<p>
Applications which obtain two LOB objects from the same result set column on a row now fail.
</p>


<!-- 
  DESCRIBE WHY THE CHANGE WAS MADE.

  For instance:

  The previous behavior violated the JDBC standard. The new behavior
  is correct.
-->


<h4>Rationale for Change</h4>

<p>
Obtaining several LOB objects from the same column causes resource management problems and intermittent errors (see <a href="https://issues.apache.org/jira/browse/DERBY-3844">DERBY-3844</a> for a description). The change is in line with the maximum portability statement found in the JavaDoc for <tt>java.sql.ResultSet</tt>.
</p>


<!-- 
  OPTIONAL: DESCRIBE HOW TO REVERT TO THE PREVIOUS BEHAVIOR OR
  OTHERWISE AVOID THE INCOMPATIBILITIES INTRODUCED BY THIS CHANGE.

  For instance:

  Users must recode applications which open multiple streams on the same column.
-->


<h4>Application Changes Required</h4>

<p>
Users must recode applications which obtain multiple LOB objects (<tt>java.sql.Blob</tt> or <tt>java.sql.Clob</tt>) on the same column. Note that for instance <tt>getCharacterStream(1)</tt> followed by <tt>getClob(1)</tt> will also raise the exception.
</p>



</blockquote>
<hr>
<h3>
<a name="Note for DERBY-2769"></a>Note for DERBY-2769</h3>
<blockquote>

<!-- 
  SUMMARIZE THE ISSUE. This is a one line summary of the issue.

  For instance:

  Applications may no longer open two InputStreams on the same ResultSet column.
-->


<h4>Summary of Change</h4>

<p>
Comprehensive validity checks for the parameters of <tt>Clob.setString</tt> have been introduced.
</p>


<!-- 
  DESCRIBE WHAT IT IS THAT THE USER ACTUALLY SEES WHEN THE PROBLEM OCCURS.

  For instance:

  In the previous release, applications were able to open two
  InputStreams on the same column. Depending on how these streams
  interacted, the value siphoned out of the column was erratic. Now
  Derby raises a SQLException when the application attempts to create
  the second InputStream.
-->


<h4>Symptoms Seen by Applications Affected by Change</h4>

<p>
There are three possible symptoms, all observable when invoking <tt>Clob.setString</tt>:
<ol>
    
<li>An exception may be raised at an earlier point in time than before.</li>
    
<li>For failing invocations, the SQL state of the raised exception may differ.</li>
    
<li>Invocations of <tt>Clob.setString</tt> with certain invalid parameters will now fail, whereas they succeeded before.</li>

</ol>

</p>


<!-- 
  OPTIONAL: DESCRIBE INCOMPATIBILITIES WITH PREVIOUS RELEASE, IF ANY.

  For instance:

  Applications which open two InputStreams on the ResultSet column now
  fail.
-->


<h4>Incompatibilities with Previous Release</h4>

<p>

<ol>
    
<li>
<tt>offset</tt> less than zero or more than or equal to the length of <tt>str</tt> was accepted, but is now rejected.</li>
    
<li>
<tt>str</tt> with a value of <tt>null</tt> was accepted, but is now rejected.</li>
    
<li>
<tt>len</tt> less than zero was accepted, but is now rejected.</li>
    
<li>
<tt>offset + len</tt> more than the length of <tt>str</tt> was accepted, but is now rejected.</li> 

</ol>

</p>


<!-- 
  DESCRIBE WHY THE CHANGE WAS MADE.

  For instance:

  The previous behavior violated the JDBC standard. The new behavior
  is correct.
-->


<h4>Rationale for Change</h4>

<p>
Make the parameter checking comply with the <tt>JDBC</tt> specification.
</p>


<!-- 
  OPTIONAL: DESCRIBE HOW TO REVERT TO THE PREVIOUS BEHAVIOR OR
  OTHERWISE AVOID THE INCOMPATIBILITIES INTRODUCED BY THIS CHANGE.

  For instance:

  Users must recode applications which open multiple streams on the same column.
-->


<h4>Application Changes Required</h4>

<p>
The following rules must be followed to avoid exceptions being raised when invoking <tt>Clob.setString</tt>:
<ol>
    
<li>
<tt>offset</tt> must be smaller than the length of <tt>str</tt>, and cannot be negative.</li>
    
<li>
<tt>str</tt> cannot be <tt>null</tt>.</li>
    
<li>
<tt>len</tt> must be zero or greater.</li>
    
<li>
<tt>offset + len</tt> must be smaller than the length of <tt>str</tt>.</li> 

</ol>

</p>



</blockquote>
</blockquote>
<h2>
<a name="Build Environment"></a>Build Environment</h2>
<blockquote>
<p>Derby release 10.6.1.0 was built using the following environment:</p>
<ul>
<li>
<b>Branch</b> - Source code came from the 10.6 branch.</li>
<li>
<b>Machine</b> - Mac OS X 10.5.8.</li>
<li>
<b>Ant</b> - Apache Ant version 1.7.1 compiled on June 27 2008.</li>
<li>
<b>JDK 1.4</b> - Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_22-b02-329).</li>
<li>
<b>Java 6</b> - Java(TM) SE Runtime Environment (build 1.6.0_17-b04-248-9M3125).</li>
<li>
<b>Compiler</b> - The 1.6.0_17-b04-248-9M3125 javac was used to compile all classes.</li>
<li>
<b>JSR 169</b> - J2ME support was built using libraries from phoneME Advanced Milestone Release 2.</li>
</ul>
</blockquote>
</body>
</html>
